home *** CD-ROM | disk | FTP | other *** search
/ PC Play 129 / pc play 129.iso / Demo / man2 / man2.exe / data / scripts / fog.lua < prev    next >
Encoding:
Text File  |  2007-01-25  |  5.7 KB  |  188 lines

  1. --
  2. -- effects emitter creation test
  3. --
  4. desc = getEffectDescriptionP(ENET_EFFECT_EFFECTSEMITTER_FOG)
  5. desc.ClassID = ENCLASS_UNKNOWN
  6. desc.EffectClassType = ENECT_EFFECTSEMITTER
  7. desc.ActivityType = ENACT_PASSIVE
  8.  
  9. desc.ScriptSet = ENSCRIPTSET_UNKNOWN
  10. desc.RelativePosition = ENLOCALPOS_NOTSPECIFIED
  11. local vzbzd1 = D3DXVECTOR3:new(0,0,0)
  12. desc.LocalPosition = vzbzd1
  13. vzbzd1:delete()
  14. emitterdesc = desc.EffectsEmitter
  15. emitterdesc.EmitEffectType = ENET_EFFECT_BINDEDSPRITE_FOG
  16. emitterdesc.EffectsPerSecond = 10
  17.  
  18.  
  19. --
  20. -- sprite 0 creation test
  21. --
  22.  
  23. function fog_onSpriteCreate()
  24.     local effect = uniGetExecutor()
  25.  
  26.     local interpolator = createInterpolator()
  27.     interpolator:addKey(0.0,1.0)
  28.     interpolator:addKey(8.0,10.0)
  29.     interpolator:finalize(false)
  30.     effect:addInterpolator(interpolator,getFieldOffset(EN_FIELD_SCALE_X))
  31.     effect:addInterpolator(interpolator,getFieldOffset(EN_FIELD_SCALE_Y))
  32.     effect:addInterpolator(interpolator,getFieldOffset(EN_FIELD_SCALE_Z))
  33.  
  34.     local interpolator = createInterpolator()
  35.     interpolator:addKey(0.0,0.0)
  36.     interpolator:addKey(1.0,1.0)
  37.     interpolator:addKey(6.0,1.0)
  38.     interpolator:addKey(8.0,0.0)
  39.     interpolator:finalize(false)
  40.     effect:addInterpolator(interpolator,getFieldOffset(EN_FIELD_EMISSIVE_A))
  41.  
  42.  
  43.     local interpolator = createInterpolator()
  44.     interpolator:addKey(0.0,1.0)
  45.     interpolator:addKey(1.0,1.0)
  46.     interpolator:addKey(6.0,1.0)
  47.     interpolator:addKey(8.0,1.0)
  48.     interpolator:finalize(false)
  49.     effect:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_R))
  50.     effect:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_G))
  51.     effect:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_B))
  52. --[[
  53.     local interpolator = createInterpolator()
  54.     interpolator:addKey(0.0,0.0)
  55.     interpolator:addKey(1.0,0.0)
  56.     interpolator:addKey(6.0,0.0)
  57.     interpolator:addKey(8.0,0.0)
  58.     interpolator:finalize(false)
  59.     effect:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_G))
  60.     effect:addInterpolator(interpolator,getFieldOffset(EN_FIELD_DIFFUSE_B))
  61. ]]--
  62.  
  63.     effect:addRotationEffect(ENET_EFFECT_ROTATE_SPIRAL,rand(-0.1,0.1))
  64.  
  65.     local wPos = effect:getWorldPosition()
  66.     effect:setLocalPosition(wPos.x + rand(-100,100),wPos.y + rand(4,4),wPos.z + rand(-100,100))
  67. --[[
  68.     local tree = createWorldEffect(304 + rand(0,15),wPos.x + rand(-100,100),wPos.z + rand(-100,100))
  69.     local interpolator = createInterpolator()
  70.     interpolator:addKey(0.0,0.01)
  71.     interpolator:addKey(10.0,1.0)
  72.     interpolator:addKey(10000.0,1.0)
  73.     interpolator:finalize(false)
  74.     tree:addInterpolator(interpolator,getFieldOffset(EN_FIELD_SCALE_X))
  75.     tree:addInterpolator(interpolator,getFieldOffset(EN_FIELD_SCALE_Y))
  76.     tree:addInterpolator(interpolator,getFieldOffset(EN_FIELD_SCALE_Z))]]--
  77. end
  78.  
  79. desc = getEffectDescriptionP(ENET_EFFECT_BINDEDSPRITE_FOG)
  80. desc.ClassID = ENCLASS_ORIENTEDSPRITE
  81. desc.EffectClassType = ENECT_ORIENTEDSPRITE
  82. desc.onCreate = "fog_onSpriteCreate"
  83. --desc.ActivityType = ENACT_SEMIACTIVE
  84. desc.ActivityType = ENACT_ACTIVE
  85. desc.LifeLimit = 8.0
  86.  
  87. desc.ScriptSet = ENSCRIPTSET_UNKNOWN
  88. desc.FileName = "fog5.dds"
  89. desc.RelativePosition = ENLOCALPOS_NOTSPECIFIED
  90. --desc.RelativePosition = ENLOCALPOS_BBOX_PLANE_XZRANDOM_Y0
  91. local vzbzd2 = D3DXVECTOR3:new(0,0,0)
  92. desc.LocalPosition = vzbzd2
  93. vzbzd2:delete()
  94. desc.isAnimateTexture = false
  95.  
  96. desc.Material = ENMAT_3DSPRITE_ALPHED
  97. desc.MaterialColors.Ambient.r = 0
  98. desc.MaterialColors.Ambient.g = 0
  99. desc.MaterialColors.Ambient.b = 0
  100. desc.MaterialColors.Ambient.a = 1
  101. desc.MaterialColors.Diffuse.r = 0
  102. desc.MaterialColors.Diffuse.g = 0
  103. desc.MaterialColors.Diffuse.b = 0
  104. desc.MaterialColors.Diffuse.a = 1
  105. desc.MaterialColors.Emissive.r = 1
  106. desc.MaterialColors.Emissive.g = 1
  107. desc.MaterialColors.Emissive.b = 1
  108. desc.MaterialColors.Emissive.a = 0
  109. desc.RenderType = ENRENDERTYPE_GEOMETRY
  110.  
  111. spdesc = desc.OrientedSprite
  112. spdesc.SpriteType = EN3DSPRITE_BINDED
  113. spdesc.xsize = 10
  114. spdesc.ysize = 10
  115. local vzbzd3 = D3DXVECTOR3:new(0,0,1)
  116. spdesc.OrientAxis = vzbzd3
  117. vzbzd3:delete()
  118. local vzbzd4 = D3DXVECTOR3:new(0,1,0)
  119. spdesc.BindAxis = vzbzd4
  120. vzbzd4:delete()
  121. spdesc.Centering = ENCENTERING_CENTER
  122. spdesc.isTargetted = false
  123. spdesc.TargetRelativePosition = ENLOCALPOS_NOTSPECIFIED
  124. spdesc.IsAxisInLocalSpace = false
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137. ---------------------------------------------------------------------------------------------
  138. -----   special "fast" fog-------------------------------------------------------------------
  139. ---------------------------------------------------------------------------------------------
  140.  
  141. function createWorldEffect_fog(size,pos_x,pos_z)
  142.     fogD = fogCreationParams:new()
  143.     fogD.cloudLifeTime = 10.0;
  144.     fogD.textureName = "environment_effect_explosion_smoke15.dds";
  145.     fogD.Material = ENMAT_SIMPLEPARTICLE;
  146.     fogD.cloudsPerSecond = (size * size) / 10000 * 6.0;
  147.     
  148.     fogD.initialSpeedMin = 1;
  149.     fogD.initialSpeedMax = 6;
  150.     fogD.initialAngleSpeedMin = -0.4;
  151.     fogD.initialAngleSpeedMax = 0.4;
  152.     fogD.initialSizeMin = 10;
  153.     fogD.initialSizeMax = 20;
  154.     fogD.initialAngleMin = -MATH_PI;
  155.     fogD.initialAngleMax = MATH_PI;
  156.  
  157.     fogD.startingPosVariance.x = size;
  158.     fogD.startingPosVariance.y = 10;
  159.     fogD.startingPosVariance.z = size;
  160.  
  161.     fogD.sizePercentKeys:addKey(1,0)
  162.     fogD.sizePercentKeys:addKey(4,10)
  163.  
  164.     fogD.transparencyKeys:addKey(0,0)
  165.     fogD.transparencyKeys:addKey(0.7,1)
  166.     fogD.transparencyKeys:addKey(0.7,9.0)
  167.     fogD.transparencyKeys:addKey(0,10)
  168.  
  169.     fogD.speedPercentKeys:addKey(1,0)
  170.     fogD.speedPercentKeys:addKey(1,10)
  171.  
  172.     fogD.angleSpeedPercentKeys:addKey(1,0)
  173.     fogD.angleSpeedPercentKeys:addKey(1,10)
  174.  
  175.     local fog = createFogEffect(fogD)
  176.     fog:setLocalPosition(pos_x,0,pos_z)
  177.     return fog
  178. end
  179.  
  180. function CWE_fog(size)
  181.     local m = getMouse3DWorldPosition()
  182.     local fog = createWorldEffect_fog(size,m.x,m.z)
  183. end
  184.  
  185.  
  186.  
  187.  
  188.